home *** CD-ROM | disk | FTP | other *** search
/ IRIX Installation Tools & Overlays 1999 May / SGI IRIX Installation Tools & Overlays 1999 May - Disc 2.iso / relnotes / license_eoe / ch8.z / ch8
Text File  |  1999-04-19  |  48KB  |  1,321 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        8.  _G_l_o_b_e_t_r_o_t_t_e_r__F_L_E_X_l_m__R_e_l_e_a_s_e__N_o_t_e_s
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.                               Flexible License Manager
  17.  
  18.                                    Version 5.12a
  19.  
  20.                                    RELEASE NOTES
  21.  
  22.                                    May 19, 1997
  23.  
  24.                These release notes describe the changes from FLEXlm v5.0
  25.  
  26.  
  27.  
  28.        OVERVIEW
  29.        ________
  30.  
  31.                o lc_hostid() -- improved hostid interface.
  32.                o LM_A_RETRY_CHECKOUT attribute -- improved checkout reliability
  33.                o SUPERSEDE="feat1 ... featn" -- New license file option.
  34.                  Allows one feature to supersede any other previous feature lines.
  35.                o PLATFORMS="plat1 ..." -- license can lock to particular
  36.                  hardware platforms.
  37.                o Serial Number hostid (ID=nnnn) -- for licensing without
  38.                  requiring real end-user hostid.
  39.                o lmdiag can checkout individual INCREMENT lines.
  40.                o WARNING() -- improved status reporting for Lenient Licensing.
  41.                o PERROR(), PWARN() -- easier Windows programming.
  42.                o MAX -- New End-User option allows sysadmin to prioritize
  43.                  use amongst groups.
  44.                o TIMEOUTALL -- Easier way to TIMEOUT all features via end-user
  45.                  options file.
  46.                o lc_checkin(...LM_CI_ALL_FEATURES...) -- You can now checkin
  47.                  all features with one call.  This gives a more accurate
  48.                  log in REPORTLOG than simply exiting.
  49.                o LM_A_TCP_TIMEOUT -- Automatically retrieves licenses even
  50.                  when users turn off their computers (especially Windows).
  51.                o CPU Usage is now logged to REPORTLOG file.  Vendors can
  52.                  now charge based on process CPU Usage, and users can
  53.                  do internal billbacks also based on CPU Usage.
  54.                o CPU_USAGE_INTERVAL, CPU_USAGE_DELTA  -- Users can fine-tune
  55.                  how much CPU-Usage information is logged.
  56.                o Improved security for expiration dates.
  57.                o makekey is improved -- easier to use for more flexible.
  58.                o lmswitchr -- improved command-line interface.
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.                o End-User Options file now supports PACKAGE names.
  75.                o lmdiag -- REPORTLOG now ignores lmdiag checkouts.
  76.  
  77.        Important Note
  78.        ______________
  79.  
  80.                The ENCRYPTION_SEED1 and ENCRYPTION_SEED2 in lm_code.h are
  81.                numbers which are key to FLEXlm security.  They are 0x87654321
  82.                and 0x12345678 by default.  Each vendor must ensure that you
  83.                replace these with numbers which are unique to your company,
  84.                and keep these numbers secret.  Only someone with access to
  85.                these numbers can generate license files that will work with
  86.                your application.  MAKE SURE the numbers are not left to the
  87.                defaults.
  88.  
  89.  
  90.  
  91.        Notice of Future Changes
  92.        ________________________
  93.  
  94.                Discontinuing "man" Pages
  95.                _________________________
  96.  
  97.                Starting with v6 of FLEXlm, we will no longer ship a "man"
  98.                directory, with Unix-style man pages.   These seem to
  99.                be more rarely used these days, and we ship HTML files
  100.                which provide a more popular on-line interface.
  101.  
  102.                Discontinuing debug_libs directory
  103.                __________________________________
  104.  
  105.                Starting with v6 of FLEXlm, we will no longer ship a
  106.                debug_libs directory.
  107.  
  108.  
  109.        New Features in V5.1
  110.        ____________________
  111.  
  112.  
  113.  
  114.                lc_hostid() -- improved hostid interface.
  115.                _________________________________________
  116.  
  117.                        int lc_hostid(  LM_HANDLE *job,
  118.                                        int id_type,
  119.                                        char buf[MAX_CONFIG_LINE])
  120.  
  121.                        lc_hostid() fills in buf with a hostid string
  122.                        specified by type.  If type is HOSTID_DEFAULT, you get
  123.                        the default hostid type on the system.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.                        Hostids have become more flexible in recent versions,
  141.                        and this allows programmers access to hostid
  142.                        information in string format.  It's recommended in the
  143.                        future that programmers use this function and avoid
  144.                        functions that deal with (HOSTID *) struct
  145.                        information, since this may change from version to
  146.                        version.
  147.  
  148.                        Note that lc_hostid may return a space-separated list
  149.                        of hostids, if that's appropriate on a given system.
  150.  
  151.                        Hostid types are specified and described in lmclient.h
  152.                        and include
  153.  
  154.                                HOSTID_LONG             HOSTID_ETHER
  155.                                HOSTID_ANY              HOSTID_USER
  156.                                HOSTID_DISPLAY          HOSTID_HOSTNAME
  157.                                HOSTID_ID_MODULE        HOSTID_STRING
  158.                                HOSTID_FLEXID1_KEY      HOSTID_DISK_SERIAL_NUM
  159.                                HOSTID_INTERNET         HOSTID_DEMO
  160.                                HOSTID_FLEXID2_KEY      HOSTID_FLEXID3_KEY
  161.                                HOSTID_FLEXID4_KEY      HOSTID_FLEXID5_KEY
  162.                                HOSTID_SERNUM_ID        HOSTID_VENDOR
  163.                                HOSTID_DEFAULT
  164.  
  165.                        lc_hostid returns 0 on success, and the FLEXlm errno on
  166.                        error.
  167.  
  168.                LM_A_RETRY_CHECKOUT attribute
  169.                _____________________________
  170.  
  171.                        When true, checkouts that fail due to communications
  172.                        errors are automatically retried once.  Often this
  173.                        second attempt will succeed on networks with poor
  174.                        communications.  This is turned on by default in both
  175.                        the Simple and Trivial API, and the default is off in
  176.                        the FLEXible API.  Use
  177.  
  178.                            lc_set_attr(job, LM_A_RETRY_CHECKOUT, (LM_A_VAL_TYPE)1);
  179.  
  180.                        to turn this attribute on for the FLEXible API
  181.                        (recommended).  It's turned off by default in the
  182.                        FLEXible API so that previous default behavior is
  183.                        preserved.
  184.  
  185.  
  186.                License File Enhancments
  187.                ________________________
  188.  
  189.  
  190.                        SUPERSEDE List
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.                        ______________
  207.  
  208.  
  209.                        SUPERSEDE
  210.                        SUPERSEDE="feat1 ... featn"
  211.                        SUPERSEDE=*ALL*
  212.  
  213.                        SUPERSEDE (new in v5.0) can now take a list of features
  214.                        to supersede.  This means that you can ship a single
  215.                        feature line which, if installed, will make other
  216.                        features with previous ISSUED dates unavailable to
  217.                        your customers.  This is a way to securely phase out
  218.                        FEATUREs already shipped.  If the list is "ALL", then all
  219.                        previously issued FEATURE lines are disabled.
  220.  
  221.  
  222.                        PLATFORMS="..."
  223.                        _________________________
  224.  
  225.                        This allows you to restrict usage to particular hardware
  226.                        platforms.  The platforms are defined as the same platforms
  227.                        that are used to license FLEXlm itself:  sun4_u4, i86_n3, etc.
  228.                        The names can be found in the Platform Specific Notes section
  229.                        at the bottom of this file.  Note that the platform
  230.                        name can be overridden with
  231.  
  232.                        lc_set_attr(job, LM_A_PLATFORM_OVERRIDE, (LM_A_VAL_TYPE)str);
  233.  
  234.                        Note that the trailing digit in the platform name is
  235.                        ignored, and can be optionally left off in the name.
  236.  
  237.                        If the platform list differs in any way for 2 INCREMENT
  238.                        lines for the same feature-name, they're are pooled
  239.                        separately and counted separately.
  240.  
  241.                        Examples:
  242.  
  243.                                FEATURE f1 ... PLATFORMS=sun4_u4
  244.                                INCREMENT f2 ... 1 PLATFORMS="i86_w alpha_u"
  245.                                INCREMENT f2 ... 1 PLATFORMS="i86_w"
  246.  
  247.                        f1 can be used on any sparc station running SunOS or
  248.                        Solaris.
  249.  
  250.                        f2 can be used on a PC running Windows (not NT) and
  251.                        Dec Alpha running OSF1 or DEC-Unix.  There's 1 license
  252.                        that can be shared between all Windows and Alpha-Unix
  253.                        systems, and 1 more license just for Windows.  That is,
  254.                        at most 1 f2 can be used on the Alpha-Unix systems,
  255.                        but at most 2 f2s can be used by Windows systems.
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.                        If the checkout fails because it's on the wrong
  273.                        platform, the error returned is LM_PLATNOTLIC:
  274.                        "This platform not authorized by license"
  275.  
  276.  
  277.                        ID=1234 HOSTID
  278.                        ______________
  279.  
  280.                        We now support a pseudo-hostid of "ID=...".  This is
  281.                        functionally equivalent to the "ANY" hostid -- it
  282.                        will run on any node.  The difference is that the
  283.                        customer has a unique identifier that can be used
  284.                        to identify the customer.  This hostid can be used
  285.                        to lock the license server (on the SERVER line) or
  286.                        the client node (on the FEATURE/INCREMENT line) --
  287.                        anywhere a hostid can be used.  The number can have
  288.                        dashes included for readability -- the dashes are
  289.                        ignored.
  290.  
  291.                                Examples:
  292.                                        ID=12345678 is the same as
  293.                                        ID=1234-5678 is the same as
  294.                                        ID=1-2-3-4-5-6-7-8
  295.  
  296.                        The HOSTID struct for this type is setup thus:
  297.  
  298.                                type = HOSTID_SERNUM_ID
  299.                                id.string contains the id in string format.
  300.  
  301.                lmdiag can now checkout individual INCREMENT or FEATURE lines
  302.                _____________________________________________________________
  303.  
  304.                        If a license file contains multiple lines for a
  305.                        particular feature, you can now select a particular
  306.                        line for lmdiag to report on.  For example:
  307.  
  308.                                lmdiag f1:HOSTID=12345678
  309.  
  310.                        will attempt a checkout on the line with the hostid limited
  311.                        to 12345678
  312.  
  313.                        The full syntax is:
  314.  
  315.                                lmdiag feature:specification=value
  316.  
  317.                        where:
  318.                                feature         feature name
  319.                                specification   one of the following:
  320.  
  321.                                                VERSION
  322.                                                HOSTID
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.                                                EXPDATE
  339.                                                KEY
  340.                                                VENDOR_STRING
  341.                                                ISSUER
  342.                                                NOTICE
  343.                                                dist_info
  344.                                                user_info
  345.                                                asset_info
  346.                                value           the value specifies a particular line.
  347.  
  348.                WARNING(): Warning messages for Simple and Trivial API
  349.                ____________________________________________________
  350.  
  351.                With LM_LENIENT and LM_FAILSAFE, a CHECKOUT or lp_checkout() call
  352.                may succeed, while the license was not actually checked out.
  353.                In this case, an application may want to inform the user of
  354.                the condition, while still running.
  355.                If there is a warning condition:
  356.                        1) CHECKOUT() and lp_checkout() will return 0 (success),
  357.                        2) lp_warning() and WARNING() will return a string
  358.                           describing the warning condition.
  359.  
  360.                If there is no warning condition (the license was fully
  361.                checked out from the server), then lp_warning() and WARNING()
  362.                will return 0 (NULL).
  363.  
  364.                PERROR(), PWARN(), lp_perror() and lp_pwarn()
  365.                ___________________________________________________________
  366.  
  367.                These Trivial and Simple API functions all print error
  368.                and/or warning messages to the user.
  369.  
  370.                Windows: The messages appear in popups.
  371.  
  372.                Unix:   The messages are printed to stderr.
  373.  
  374.                These functions are most useful on windows systems, since the
  375.                popups are convenient for programmers and end-users.
  376.  
  377.  
  378.                End User Options File Enhancments
  379.                ___________________________________
  380.  
  381.                        MAX
  382.                        ___
  383.  
  384.                        Syntax:         MAX numlic featurename type name
  385.                        Example:        MAX 4 f1 GROUP accounting
  386.  
  387.                        MAX gives your customers significantly more flexibility in
  388.                        how they prioritize use of licenses at their site.  In past,
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.                        you could RESERVE licenses for individuals, or prevent
  405.                        individuals from using licenses, but with MAX, you can now
  406.                        indicate that a particular GROUP has a maximum use.  You can
  407.                        also specify USER, HOST, HOST_GROUP, etc. as with all end-user
  408.                        options.  If a checkout exceeds the maximum, they will see the
  409.                        following error message:
  410.  
  411.                        Checkout exceeds MAX specified in options file (-87,147)
  412.  
  413.  
  414.                        TIMEOUTALL
  415.                        __________
  416.  
  417.                        This works the same as TIMEOUT, but applies to all features:
  418.  
  419.                                TIMEOUTALL 1000
  420.  
  421.                        All features are timed out in 1000 seconds.  See the
  422.                        Programmers and/or End-User manual for more information
  423.                        on TIMEOUT behavior.
  424.  
  425.  
  426.                        End-user Options features can now be PACKAGE names
  427.                        __________________________________________________
  428.  
  429.                        If you specify a PACKAGE name in the options file, it
  430.                        will apply to all features in that package.  This is
  431.                        true for both regular PACKAGEs and OPTIONS=SUITE.
  432.  
  433.  
  434.                lc_checkin() now takes LM_CI_ALL_FEATURES
  435.                _________________________________________
  436.  
  437.                The feature for lc_checkin can now be LM_CI_ALL_FEATURES
  438.                (which is actually a NULL pointer).  This will check in all
  439.                features currently checked out.  This has nearly the same
  440.                effect as calling lc_disconn() or even lc_free_job().
  441.                However, since a checkin message is actually sent to the
  442.                server, the REPORTLOG logs this as a normal checkin().
  443.                checkins that occur because of a disconnect are indicated
  444.                differently in the log, so that end-users could differentiate
  445.                between an application that actually calls checkin, and one
  446.                that simply exits.
  447.  
  448.                IMPORTANT:  If you use LM_CI_ALL_FEATURES (in the client) with
  449.                ls_infilter (in the vendor daemon), then ls_infilter MUST
  450.                check the feature name against LM_CI_ALL_FEATURES, which is
  451.                actually a NULL pointer.  Failure to do so may result in a
  452.                crash.  That is, you must check:
  453.  
  454.                        if (feature != LM_CI_ALL_FEATURES)
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.                LM_A_TCP_TIMEOUT
  471.                ________________
  472.  
  473.                If a client node crashes or the client node is disconnected
  474.                from the network, the license will be automatically checked
  475.                back in in LM_A_TCP_TIMEOUT seconds.
  476.                        default:                2 hours (60*60*2).
  477.                        Maximum value:          4 hours 15 minutes (15300 seconds),
  478.                                                or 0 means NO TCP timeout.
  479.                        Minimum value:          60 seconds
  480.  
  481.                CPU Usage is now logged to REPORTLOG file.
  482.                __________________________________________
  483.  
  484.                        CPU Usage is now automatically always logged when the
  485.                        REPORTLOG file is in use.  In addition, this can be
  486.                        fine-tuned by the end-user with 2 settings in the
  487.                        end-user options file.  The settings allow the user to
  488.                        limit how much CPU-usage is logged, thereby reducing
  489.                        log file size.  By default, CPU-usage is only logged
  490.                        at checkout and checkin.  However, it can also be
  491.                        logged with heartbeats enabling more accurate and
  492.                        fine-tuned CPU-usage reporting.
  493.  
  494.                                REPORTLOG filename                              [ CPU_USAGE_INTERVAL = {n|CONTINUOUS} ]                 [CPU_USAGE_DELTA = n]
  495.  
  496.                        CPU_USAGE_INTERVAL=n -- CPU-usages from heartbeats
  497.                                will be reported no more often than once every n
  498.                                minutes.  Default is a huge number.
  499.                                "CONTINUOUS" is the same as 0, but is easier
  500.                                to read.
  501.  
  502.                        CPU_USAGE_DELTA=n -- n is in tenths of a second of CPU
  503.                                time.  Only log CPU-usage if it has changed
  504.                                from the last log by n/10 seconds of CPU-time.
  505.  
  506.  
  507.                Improved Expiration Date Checking
  508.                _________________________________
  509.  
  510.                FLEXlm now automatically makes the following checks to ensure
  511.                security of the expiration date.  These checks ONLY occur if the
  512.                license to be granted is expiring.
  513.  
  514.                        1) If the date on the system running the license
  515.                           server has been set back more than 24 hours,
  516.                           checkout fails with LM_BADSYSDATE
  517.  
  518.                        2) If the client is NOT using USE_SERVER or port@host,
  519.                           the checkout fails if the client node's system date
  520.                           has been set back more than 24 hours.
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.                        3) If the client's date differs by more than 24-hours
  537.                           from the server's date.
  538.  
  539.  
  540.        FLEXible API Changes
  541.        ____________________
  542.  
  543.                lc_baddate changes
  544.                __________________
  545.  
  546.                There are now 3 options with regard to end-users setting the system
  547.                date back:
  548.  
  549.                1) The default is that we make no attempt to find out of the
  550.                   system date has been set back.
  551.  
  552.                2) If you want to deny service because the system date has
  553.                   been set back, then use the one of the following (depending
  554.                   on the API):
  555.  
  556.                        o CHECKOUT(policy|LM_CHECK_BADDATE, ...);
  557.                        o lp_checkout(policy|LM_CHECK_BADDATE, ...);
  558.                        o lc_set_attr(job, LM_A_CHECK_BADDATE, 1);
  559.  
  560.                3) If you do not want to deny service, but only want to warn
  561.                   if the system date has been set back, in the FLEXible API, call
  562.  
  563.                        if (lc_baddate(job))
  564.                                lc_perror(warning_string, job);
  565.  
  566.                NOTE: this changed from v5.11a, where the only option where
  567.                CHECK_BADDATE was the default, and there was no option to
  568.                disable it.
  569.  
  570.                We found some cases on Unix with the date expiration routines
  571.                (identified as bug P2181), which caused a checkout to hang or
  572.                take a long time.  In order to fix these cases, the routines
  573.                which detect a systems date being set back (including lc_baddate())
  574.                do not detect a set-back date as often as they did previously.
  575.  
  576.  
  577.                lc_expire_days returns LM_FOREVER on unexpiring license
  578.                _______________________________________________________
  579.  
  580.                If the license doesn't expire, the expiration date is set to
  581.                1-jan-0, and lc_expire_days will return LM_FOREVER, which
  582.                is defined to be 9999.  In version 5.0, lc_expire_days returned
  583.                the number of days until a date in the year 2038.
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.        Other Enhancements
  603.        __________________
  604.  
  605.  
  606.                makekey prompts are more helpful
  607.                ________________________________
  608.  
  609.                The makekey license generator now has a simplified, more
  610.                helpful interface, and supports the all FEATURE attributes.
  611.  
  612.  
  613.                lmswitchr accepts daemon name
  614.                _____________________________
  615.  
  616.                lmswitchr syntax is now:
  617.  
  618.                        lmswitchr [ -c license_file ] daemon new-file, or
  619.                        lmswitchr [ -c license_file ] feature new-file
  620.  
  621.                It used to only accept a feature name.  It now accepts a
  622.                daemon name also, and this is usually easier to use.
  623.  
  624.  
  625.                lmgrd -nfs_log -- faster logging
  626.                ________________________________
  627.  
  628.                        The -nfs_log is used to turn off fflush() commands to
  629.                        both the debug log and REPORTLOG files.  Through
  630.                        internal testing we've discovered that fflush() can,
  631.                        on some systems, noticeably slow down the servers when
  632.                        they log to files that are NFS-mounted.
  633.  
  634.                        In practice we recommend that log files NOT be
  635.                        NFS-mounted, but if you must do this, -nfs_log is then
  636.                        recommended.  This may mean that the log files will be
  637.                        behind by a transaction or two, but in practice we
  638.                        find that -nfs_log actually makes no noticeable
  639.                        change, except to make the servers run faster.
  640.  
  641.  
  642.                lmdiag:  server logs do not record checkout
  643.                ___________________________________________
  644.  
  645.                        In previous versions, when lmdiag checked out a
  646.                        license from the server, the server logs recorded the
  647.                        checkout.  The logs now no longer are affected by
  648.                        lmdiag.
  649.  
  650.  
  651.                lmcrypt: -f is now the default
  652.                ______________________________
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.                        In previous versions lmcrypt required -f to encrypt
  669.                        a line already encrypted.  This is now the default
  670.                        behavior and doesn't require the -f argument.
  671.                        If you prefer the old behavior, it can be modified
  672.                        in machind/lmcrypt.c.  The -f argument now has no effect.
  673.  
  674.  
  675.  
  676.        Other Changes
  677.        _____________
  678.  
  679.                makekey.c now uses lc_cryptstr()
  680.                ________________________________
  681.  
  682.                        makekey source now uses lc_cryptstr() as encrypting
  683.                        function.  It previously used lc_crypt(), which is a
  684.                        harder function to use and maintain across FLEXlm
  685.                        versions.  We now recommend that lc_cryptstr() be used
  686.                        in its place.
  687.  
  688.  
  689.  
  690.        Bug fixes:
  691.        __________
  692.  
  693.                Bug  Platform   Description
  694.                P1039   all     lmcrypt and lc_cryptstr() ignore FEATURESET.
  695.                P1414   all     lmcrypt doesn't always truncate license file
  696.                                lines to 80 characters.  Note that this
  697.                                fix only applies to lines that are in the
  698.                                v4+ format -- to force this, add ck=0 attributes
  699.                                to each line.
  700.                P1460   all     In rare cases, checkouts with LM_A_CHECKOUT_DATA
  701.                                and LM_DUP_VENDOR can become orphaned and never
  702.                                checked in.
  703.                P1499   Win32   lsvendor.c defaults ls_minimum_user_timeout to 30
  704.                                seconds.
  705.                P1488   all     lc_expire_days() returns number of days until
  706.                                max-unix date if no expiration.  Fix is to
  707.                                return LM_FOREVER.
  708.                P1506   all     hostid lists should force FEATURE lines to be
  709.                                printed in "new" new format, i.e., HOSTID="..."
  710.                P1511   all     If TIMEOUT set, if the client tries to
  711.                                do a checkout between when the server frees the
  712.                                license and the client does a heartbeat, communications
  713.                                fail.  rare.
  714.                P1593   all     lmdiag core dumps if no SERVER line in license file.
  715.                P1602   all     lc_heartbeat() doc is missing from Reference Manual.
  716.                P1603   all     copyright was a global symbol.  All FLEXlm global
  717.                                symbols should have "l_" or "lc_" prefix.
  718.                P1619   all     lmstat reports non-suite PACKAGE name as "Error"
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.                P1621   all     1 process checks out 2 SUITE components, then checks
  735.                                1 in:  SUITE-token should remain checked out, but
  736.                                is not.
  737.                P1658   all     The following end-user options file syntax did
  738.                                not RESERVE the right FEATURE line:
  739.                                "RESERVE ... feature:HOSTID=nnn"
  740.                P1659   all     lmdiag:  If there's several INCREMENT or FEATURE lines
  741.                                for the same feature name, lmdiag only reported on
  742.                                the last line.
  743.                P1674   all     lc_test_conf after checkout with LM_CO_LOCALTEST
  744.                                returned null if using port@host or USE_SERVER.
  745.                P1676   all     CHECKIN the same feature twice resulted in a core dump.
  746.                P1708   Win32   Server log says "Unknown Signal" from lmdown.
  747.                P1715   all     vendor-defined hostids fail if the vdef hostid
  748.                                routine returns lowercase characters.
  749.                P1728   all     On some platforms, LM_PROJECT environment variable
  750.                                can cause vendor daemon to crash.
  751.                P1741   all     1) use port@host or USE_SERVER, 2) feature removed
  752.                                from license, then lmreread, 3) checkout returns
  753.                                LM_MAXUSERS instead of LM_NOFEATURE.
  754.                P1778   all     lmcrypt core dumps when hostid has 0x prefix.
  755.                P1825   all     lmdiag with colon-separated LM_LICENSE_FILE -- stops
  756.                                reporting when on file in the list doesn't exist.
  757.                P1843   all     lmdiag reports that licenses have incorrect syntax
  758.                                when they have vendor-defined hostids, though the
  759.                                files are correct.
  760.                P1850   all     lc_cryptstr() and lmcrypt have memory leaks when
  761.                                the feature contains "ck=nnn"
  762.                P1852   hp      HP provides a command for changing the ethernet
  763.                                address/hostid.
  764.                P1883   all     purify reported harmless bug in l_key.c.
  765.                P1901   all     lmcrypt/lc_cryptstr() fails with decimal hostids
  766.                                (#nnn) larger than the maximum positive 32-bit int.
  767.                P1929   all     Some lmutil utilities fail (lmdiag/lmutil, etc.) with
  768.                                FLEXLM_COMM_TRANSPORT set to UDP.
  769.                P2045   all     lmcrypt could core dump with mistyped license file.
  770.                P2058   alpha_u3 checkout uses a file descriptor which is not closed.
  771.                P2059   all     memory leak when LM_A_LICENSE_DEFAULT is called > 1
  772.                                time in a job.
  773.                P2096   i86_d4  (DG Intel): checkouts were slow.
  774.                P2118   all     makekey generates incorrect ck= checksum when
  775.                                line wraps with ''.
  776.                P2181   all     On unix systems, lc_baddate could cause a checkout
  777.                                to take a long time, or sometimes hang.
  778.                P2315   hp      a node-locked v2.4 client can fail with a v5.11
  779.                                vendor daemon.  Appears most commonly with HP client.
  780.                P2362   alpha-unix Hostid fails on some systems.
  781.  
  782.                P2372   sgi     Hostid check fails when hostid > 0x80000000
  783.                P2376   all     ret_num_reconnects arg to lc_heartbeat() or
  784.                                lp_heartbeat() is incorrect with an uncounted
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   - 13 -
  797.  
  798.  
  799.  
  800.                P2377   all     Macros for PERROR() and PWARN() are incorrect.
  801.                P2378   all     Licensing security threat.
  802.                P2391   all     Server can fail when clock is set back, even
  803.                                a few seconds. Failure is reported as LM_BADSYSDATE.
  804.                P2392   alpha-unix   lmstrip causes binaries to fail on Dec Unix 4.x.
  805.                P2399   all     With LM_LICENSE_FILE set to list of port@host,
  806.                                lc_next_conf() and lc_userlist() can fail to talk
  807.                                to all the servers. (v5.0)
  808.                P2401   all     port@host+ and LM_CO_LOCALTEST can fail with
  809.                                node-locked or when ls_use_all_features is true.
  810.                P2407   all     lmstrip doesn't modify sunos4 binaries.
  811.                P2477   all     Licensing security threat.
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.        Platform Specific Notes:
  819.        ________________________
  820.  
  821.                        i86_w3
  822.                        ______
  823.  
  824.                        Win32s will not be supported after FLEXlm v5.  This is
  825.                        because Microsoft is discontinuing support for win32s.
  826.  
  827.                UNIX
  828.                ____
  829.  
  830.  
  831.  
  832.                alpha_u3
  833.                ________
  834.  
  835.                    uname -a:   OSF1 zippy V3.2 17 alpha
  836.                    CC:         cc -std1
  837.                    NOTE:  alpha_u1 is discontinued.  This only means that
  838.                           we no longer support v1 and v2 of the OS, and
  839.                           virtually no one uses those OS versions.  Alpha_u3
  840.                           fully supports Alpha DEC Unix 3 and 4.
  841.  
  842.                decs_u4
  843.                _______
  844.  
  845.                    uname -a:   ULTRIX newport 4.2 0 RISC
  846.                    CC:         /bin/cc -DPMAX -DULTRIX -DMIPS
  847.  
  848.                dg_u5
  849.                _____
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                   - 14 -
  863.  
  864.  
  865.  
  866.                    uname -a:   dgux dgsvr4 5.4 generic AViiON mc88100
  867.                    CC:         /bin/cc
  868.  
  869.  
  870.                hp300_u8
  871.                ________
  872.  
  873.                    uname -a:   HP-UX agent86 B.08.00 A 9000/375 080009060992
  874.                    CC:         /bin/cc
  875.                    link flags: -lBSD
  876.  
  877.                hp700_u8
  878.                ________
  879.  
  880.                    uname -a:   HI-UX hit1 02.03_/B E 3050/R 154
  881.                    CC:         /bin/cc -Aa -D_HIUX_SOURCE +DA1.0 +DS1.0
  882.                                (replace HIUX with HPUX on an HP system)
  883.                    Hostid note:  we no longer recommend using ethernet address
  884.                                as a hostid.
  885.  
  886.                i86_b2
  887.                ______
  888.  
  889.                    uname -a:   BSD/OS bsdi.globes.com 2.1 BSDI BSD/OS 2.1 Kernel #1:
  890.                                Mon Jun 10 15:58:19 MDT 1996
  891.                                polk@demiurge.BSDI.COM:/usr/src/sys/compile/GENERIC
  892.                                i386
  893.                    CC:         /usr/ucb/cc
  894.  
  895.                    NOTE:       The hostid is the ethernet address.
  896.  
  897.                i86_d4
  898.                ______
  899.  
  900.                    uname -a:   dgux dgbig R4.11 generic AViiON Pentium
  901.                    CC:         /bin/cc, actually, /usr/opt/sdk/sde/ix86dgux/usr/bin
  902.  
  903.                    NOTE:       hostid comes from /dev/net/*.  By default these files
  904.                                are only readable by root.  We recommend changing the
  905.                                perms to:
  906.  
  907.                                        # chmod 644 /dev/net/*
  908.                i86_l1
  909.                ______
  910.  
  911.                    uname -a:   Linux linux 1.2.13 #1 Sun Aug 13 06:33:35 EDT 1995 i586
  912.                    CC:         /usr/bin/cc
  913.                    cc -v:      Reading specs from                      /usr/lib/gcc-lib/i486-linux/2.7.0/specs
  914.                                gcc version 2.7.0
  915.  
  916.                    IMPORTANT NOTE:  v5 version uses ethernet address as a hostid,
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                   - 15 -
  929.  
  930.  
  931.  
  932.                    which is relatively secure.  v4 used the 'hostid' command,
  933.                    which was not secure.  To obtain the ethernet address, type:
  934.  
  935.                        /sbin/ifconfig eth0
  936.  
  937.                    Convert the hardward address as follows:
  938.  
  939.                        From: HWaddr 00:40:05:16:E5:25
  940.                        To:   00400516E525
  941.  
  942.                    V5 lmhostid will report ethernet address by default.  v4
  943.                    will report 'hostid'.  Both types of hostid are acceptable
  944.                    to version 5 clients and servers.
  945.  
  946.                    lmhostid, or lmhostid -ether
  947.                        -- obtains the ethernet address (secure)
  948.                    lmhostid -long
  949.                        -- obtains the output from the 'hostid' command
  950.                           (not secure)
  951.  
  952.                i86_u2
  953.                ______
  954.  
  955.                    uname -a:   UNIX_SV rolm 4.2MP 2.0 i386 x86at
  956.                    CC:         /usr/bin/cc
  957.  
  958.                i86_x5  (Solaris on Intel)
  959.                ______
  960.  
  961.                    uname -a:   SunOS sunpc 5.4 generic i86pc i386
  962.                    CC:         /opt/SUNWspro/bin (version 3.0)
  963.  
  964.                moto_u4
  965.                _______
  966.  
  967.                    uname -a:   UNIX_System_V motosvr4 4.0 R40V4.2 m88k mc88100
  968.                    CC:         /bin/cc
  969.                    link flags: -lsocket -lnsl
  970.  
  971.                nec_u2
  972.                ______
  973.  
  974.                    uname -a:   UNIX_System_V nec 4.0 2 R3000 r3000
  975.                    CC:         /bin/cc
  976.                    link flags: -lsocket -lnsl
  977.                    /usr/necbin/uversion:       Release6.2 Rev01 - EWS4800/220 - WS
  978.  
  979.                ppc_u4 (Power PC AIX v4)
  980.                ______
  981.  
  982.                    uname -a:   AIX aixv4 1 4 00FFFFFF4D00
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                   - 16 -
  995.  
  996.  
  997.  
  998.                    CC:         /bin/cc with -D_BSD -D_BSD_INCLUDES
  999.                    link flags: -lbsd
  1000.                    Hostid is the same as rs6000.
  1001.  
  1002.                rs6000_u3
  1003.                _________
  1004.  
  1005.                    uname -a:   AIX rs6000 1 3 000276513100
  1006.                    CC:         /bin/cc -D_BSD -D_BSD_INCLUDES
  1007.                    link flags: -lbsd
  1008.  
  1009.                sco_u3
  1010.                ______
  1011.  
  1012.                    uname -a:   SCO_SV sco 3.2 2 i386
  1013.                    uname -X:
  1014.                                System = SCO_SV
  1015.                                Node = sco
  1016.                                Release = 3.2v5.0.0
  1017.                                KernelID = 95/04/19
  1018.                                Machine = i80486
  1019.                                BusType = ISA
  1020.                                Serial = 2CG001148
  1021.                                Users = 5-user
  1022.                                OEM# = 0
  1023.                                Origin# = 1
  1024.                                NumCPU = 1
  1025.                    CC:         /bin/cc -Dsco
  1026.                    link flags: scoinfo.o -lsocket
  1027.  
  1028.                    IMPORTANT NOTE:  Previous FLEXlm versions were built on an older OS:
  1029.                                     Release = 3.2v2.0
  1030.                                     KernelID = 90/10/01
  1031.  
  1032.                sgi_u4
  1033.                ______
  1034.  
  1035.                    uname -a:   IRIX oly 4.0 08212247 IP6
  1036.                    CC:         /usr/bin/cc -cckr
  1037.                    link flags: -lsun -lbsd -lc_s
  1038.  
  1039.                sgi_u5
  1040.                ______
  1041.  
  1042.                    uname -a:   IRIX indy 5.2 02282013 IP12 mips
  1043.                    CC:         /bin/cc
  1044.  
  1045.                    To build -n32 -mips3 or -n32 -mips4 on IRIX 6:
  1046.  
  1047.                        1) In this directory, do:
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                                   - 17 -
  1061.  
  1062.  
  1063.  
  1064.                                % make o32
  1065.  
  1066.                           This builds all binaries in o32 format.
  1067.  
  1068.                        2) Link your application (which has been compiled with
  1069.                           -n32 -mips3 (or -mips4) with the correct FLEXlm library:
  1070.  
  1071.                                liblmgr_n32mips3.a, or
  1072.                                liblmgr_n32mips4.a
  1073.  
  1074.                    NOTE:  sgi keys are required for any 32-bit binary, including
  1075.                           IRIX 6 with -n32 flags.
  1076.  
  1077.                sgi64_u6
  1078.                ________
  1079.  
  1080.                    uname -a:   IRIX64 challenger 6.1 07121831 IP26 mips
  1081.                    CC:         /bin/cc -64 -mips4
  1082.  
  1083.                    This was called sgir8_u6 in previous versions.  It's been
  1084.                    renamed to reflect the fact that it's 64-bit.
  1085.  
  1086.                    To build -n32 -mips3 or -n32 -mips4, see sgi_u5 above.
  1087.  
  1088.                    We currently only support 64-bit, mips4 binaries, which
  1089.                    is how all files in this directory are compiled.
  1090.  
  1091.                sun4_u4
  1092.                _______
  1093.  
  1094.                    uname -a:   SunOS ss 4.1.2 2 sun4c
  1095.                    CC:         /bin/cc
  1096.  
  1097.                    sun4_u4 is now built on a 4.1.2 system.  This means that it
  1098.                    will no longer work with 4.0.3 systems.
  1099.  
  1100.                sun4_u5
  1101.                _______
  1102.  
  1103.                    uname -a:   SunOS backstage 5.1 Generic sun4m sparc
  1104.                    CC:         /opt/SUNWspro/bin/cc
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.                                Java Addendum
  1113.  
  1114.                Installation and Directory Naming
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.                                   - 18 -
  1127.  
  1128.  
  1129.  
  1130.                ---------------------------------
  1131.                No special installation of the FLEXlm class files is required.
  1132.                The classes are in the java_01/flexlm directory of the FLEXlm
  1133.                v5.1 main directory.  Note that the FLEXlm class files must reside
  1134.                in a directory called "flexlm", since they are in a Java package
  1135.                named "flexlm".
  1136.  
  1137.                If you are running Java applications, you must set your CLASSPATH
  1138.                environment variable to include a component reflecting the location
  1139.                of the FLEXlm classes.  For example, if you installed the FLEXlm
  1140.                classes into "/a/b/c/lmgr/v5.1/java_01/flexlm" you would include
  1141.                the following component in your CLASSPATH:
  1142.                        "/a/b/c/lmgr/v5.1/java_01"
  1143.  
  1144.                If you are setting up the FLEXlm class files for access by an http
  1145.                server, they must reside in a directory called "flexlm", again
  1146.                because the FLEXlm class files are in the "flexlm" package.
  1147.  
  1148.                New Features Since v5.0
  1149.                -----------------------
  1150.                With LM.LENIENT and LM.FAILSAFE, checkout() may succeed, while
  1151.                the license was not actually checked out.  In this case, an
  1152.                application may want to inform the user of the condition, while
  1153.                still running.  If there is a warning condition:
  1154.                        1) checkout() will return 0 (success),
  1155.                        2) warning() will return a string describing the warning
  1156.                           condition.
  1157.  
  1158.                If there is no warning condition (the license was fully
  1159.                checked out from the server), warning() will return null.
  1160.  
  1161.                The string to use for the Java platform in the PLATFORM= keyword
  1162.                is "java_0".
  1163.  
  1164.                The default TCP_TIMEOUT in FLEXlm/Java is 255 minutes. There is
  1165.                no API for changing this value.
  1166.  
  1167.                Integrating FLEXlm/Java into Your Java code
  1168.                -------------------------------------------
  1169.                The constructor method for the "license" class takes your
  1170.                vendor keys and your encryption seeds as arguments.  Since
  1171.                the encryption seeds must be kept secret (anyone who knows
  1172.                your encryption seeds and has a FLEXlm kit can generate
  1173.                licenses for your product), they are XORed with vendor key 5
  1174.                when passed as method arguments.  It is strongly recommended
  1175.                that you not store your encryption seeds and vendor keys in
  1176.                variables, or pass them verbatim as arguments.
  1177.                For example, given the following:
  1178.                        Vendor name =  xyzcorp
  1179.                        vendor key 1 = 0xabcd1
  1180.                        vendor key 2 = 0xabcd2
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                                   - 19 -
  1193.  
  1194.  
  1195.  
  1196.                        vendor key 3 = 0xabcd3
  1197.                        vendor key 4 = 0xabcd4
  1198.                        vendor key 5 = 0xabcd5
  1199.                        encryption seed 1 = 0xdead1
  1200.                        encryption seed 2 = 0xdead2
  1201.  
  1202.                you would invoke the license constructor as follows:
  1203.  
  1204.                license lic = new license ("xyzcorp", 0xabcd5 ^ 0xdead1,
  1205.                                                      0xabcd5 ^ 0xdead2,
  1206.                                           0xabcd1, 0xabcd2, 0xabcd3, 0xabcd4);
  1207.  
  1208.                In this way, it's much harder for someone reading disassembled
  1209.                code to discover your encryption seeds.
  1210.  
  1211.  
  1212.                Node-locked Licenses
  1213.                --------------------
  1214.                Since Java is so portable and generic, there is not nearly the
  1215.                range of possibilities for determining a unique hostid in the
  1216.                Java environment as there are in the C/C++ world.  Therefore,
  1217.                the FLEXlm/Java library supports only "DEMO", "ANY", and
  1218.                INTERNET=xxx.xxx.xxx.xxx hostids.  Hostid lists are supported,
  1219.                so  you can node-lock a license to a list of hostids, for example:
  1220.                "INTERNET=1.2.3.4 INTERNET=1.2.3.5 INTERNET=1.2.3.6".  Wildcards
  1221.                are supported in address octets.
  1222.  
  1223.  
  1224.                Locating the License File
  1225.                -------------------------
  1226.                The checkout method allows you to specify the license file location.
  1227.                This is used to supply a runtime-determined license file location,
  1228.                such as a value supplied on the command line, applet parameter, or
  1229.                a default.  It may be specified as a colon-separated list of license
  1230.                files and/or port@host specifications.
  1231.  
  1232.                License File Restrictions
  1233.                -------------------------
  1234.                When possible, it is preferable to use "port@host" to locate the
  1235.                license file, rather than a license file path.  This is because
  1236.                the FLEXlm/Java implementation is not capable of parsing all
  1237.                possible license file syntax - when port@host is used, the server
  1238.                does all the license file parsing.  Specifically, the FLEXlm/Java
  1239.                implementation understands only the following license file lines:
  1240.                        SERVER
  1241.                        DAEMON (ignored)
  1242.                        USE_SERVER
  1243.                        FEATURE
  1244.                        INCREMENT
  1245.                        Comment lines (lines starting with the "#")
  1246.                Inclusion of other line types may cause an error.
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                                   - 20 -
  1259.  
  1260.  
  1261.  
  1262.                In addition, the Java library does not understand KEYWORD=value
  1263.                pairs (with the exception of "INTERNET=xxx.xxx.xxx.xxx" for host
  1264.                ID). or lines continued with "
  1265.  
  1266.                Examples of license file lines which are understood by the Java
  1267.                client:
  1268.  
  1269.                SERVER speedy ANY 7132
  1270.                DAEMON demo /u/flexlm/sun4_u4/demo
  1271.                FEATURE f1 demo 1.000 1-jan-00 4 BBF8808162D4072297FF ""
  1272.                FEATURE f2 demo 1.000 1-jan-98 0 FBA85061E4ACCBA6D932 "" "INTERNET=192.156.198.82 INTERNET=192.156.199.*"
  1273.  
  1274.                Examples of license file lines which are not understood by the
  1275.                Java client:
  1276.  
  1277.                PACKAGE p1 demo 1.000 8040204170869E176457 COMPONENTS="c1 c2"
  1278.                FEATURE f1 demo 1.000 1-jan-0 4 BBF8808162D4072297FF "" HOSTID=2f2f2f2f
  1279.                FEATURE f2 demo 1.000 1-jan-98 0 FBA85061E4ACCBA6D932 ""                "INTERNET=192.156.198.82 INTERNET=192.156.199.*"
  1280.  
  1281.                To reiterate, the restriction is that the FLEXlm/Java library cannot
  1282.                parse these lines - it is perfectly reasonable to use such lines in
  1283.                a license file accessed via port@host, as the server does all the
  1284.                parsing in that scenario.  License file paths should be used only
  1285.                for uncounted licenses, where it's not necessary to run a server.
  1286.  
  1287.  
  1288.                FLEXlm display
  1289.                --------------
  1290.                The FLEXlm display is a constant ("JavaDisplay") in the Java version.
  1291.  
  1292.  
  1293.                Development Environment
  1294.                -----------------------
  1295.                The FLEXlm/Java classes were compiled using Sun's JDK v1.0.2
  1296.                on Solaris/SPARC 2.x.
  1297.  
  1298.                Known bugs in this version
  1299.                --------------------------
  1300.                - Checkin is broken in port@host environment if license file line is
  1301.                  greater than 145 bytes long.  checkin fails when called, but any
  1302.                  licenses checked out by an application or applet are checked in
  1303.                  when it exits.
  1304.                - If USE_SERVER is present anywhere in the license file, it causes
  1305.                  the server to be used for everything, not just the lines following
  1306.                  USE_SERVER.
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.